#ifndef ENCODE_H
#define ENCODE_H

#include <NTL/GF2X.h>
#include <NTL/GF2E.h>
#include <NTL/vec_GF2.h>
#include <NTL/GF2.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>

NTL_CLIENT


namespace BCHEncoder{
  void encode(vec_GF2& codeword, const vec_GF2& msg, const GF2X& genpol);

  void compute_generator_polynomial(GF2X& genpol);

  // generate a random noisy codeword
  void generate_random_noisy_codeword(vec_GF2& noisy_codeword, 
				      vec_GF2& pure_codeword, 
				      const GF2X& genpol);  

}




#endif // ENCODE_H
